<template>
  <div class="page-department">
    <div class="component-mainHeader">
      <div class="top">
        <div class="topleft">
          <p>
            <span class="iconfont" style="color:#1abc9a;margin-right:3px;">&#xe607;</span>派单记录
          </p>
        </div>
        <div class="topright">
          <el-button type="info" @click="$router.go(0)">
            <span style="font-weight:700;margin-right:5px;" class="iconfont">&#xe662;</span>刷新
          </el-button>
        </div>
      </div>
    </div>
    <!-- 正常流程 -->
    <div>
      <div class="component-searchHeader">
        <div class="search-header">
          <div class="left-title">
            <p class="left-text">
              <span class="iconfont">&#xe63d;</span> 筛选查询
            </p>
            <div class="right">
              <button @click="findRes">查询</button>
            </div>
          </div>
        </div>
      </div>
      <div class="component-search-box">
        <el-form :inline="true" :model="formInline" class="demo-form-inline">
          <el-form-item label="项目名称：">
            <el-input v-model="formInline.info" placeholder="请输入项目名称" clearable></el-input>
          </el-form-item>
          <el-form-item label="操作日期：">
            <el-date-picker
              v-model="formInline.date"
              type="daterange"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              value-format="timestamp"
              :default-time="['00:00:00','23:59:59']"
            ></el-date-picker>
          </el-form-item>
          <el-form-item label="施工队：">
            <el-select v-model="formInline.name" placeholder="全部" clearable>
              <el-option
                v-for="item in teamOptions"
                :key="item.orgId"
                :label="item.orgName"
                :value="item.orgName"
              ></el-option>
            </el-select>
          </el-form-item>
        </el-form>
      </div>
      <div class="component-listHeader">
        <div class="search-header">
          <div class="left-title">
            <p class="left-text">
              <span class="iconfont">&#xe61e;</span>
              {{title}}
            </p>
          </div>
        </div>
      </div>
      <div class="table">
        <el-table
          ref="multipleTable"
          :data="info"
          tooltip-effect="dark"
          style="width:100%"
          border
          @selection-change="handleSelectionChange"
        >
          <el-table-column label="项目名称" align="center" width="160" prop="proName"></el-table-column>
          <el-table-column label="施工队队长" align="center" width="120" prop="orgName"></el-table-column>
          <el-table-column label="队人数" align="center" width="120" prop="teamCount"></el-table-column>
          <el-table-column label="派单状态" align="center" width="100" prop="acceptStatus"></el-table-column>
          <el-table-column label="项目进度" align="center" width="150" prop="proProgress"></el-table-column>
          <el-table-column label="派单时间" align="center" width="160">
            <template slot-scope="scope">{{scope.row.dispatchDate | dateFilter}}</template>
          </el-table-column>
          <el-table-column label="施工类型" align="center" width="105" prop="majorType"></el-table-column>
          <el-table-column label="操作信息" align="center">
            <template slot-scope="scope">
              <a
                class="options"
                v-show="scope.row.proProgress == '未进场' && ms_roleName == 'ProjectClerk'"
                @click.prevent="handleChangeOrder(scope.row.majorType,scope.row.proId)"
              >改派</a>
              <a
                class="options"
                @click.prevent="$router.push({name:'detailpro',params:{tabs:'third',info:scope.row.proId}})"
              >查看项目</a>
            </template>
          </el-table-column>
        </el-table>
      </div>
      <!-- 分页 -->
      <div class="component-paging" v-if="info.length > 0">
        <div class="table-bottom">
          <div class="bottom-left" style="margin-left: 42px;"></div>
          <div class="paging">
            <div class="paging-left">
              <p>
                共
                <span>{{Math.ceil(total/pageSize)}}</span> 页/
                <span>{{total}}</span> 条数据
              </p>
            </div>
            <el-pagination
              background
              @size-change="SizeChange($event,dataInit,currentPage,pageSize)"
              @current-change="CurrentChange($event,dataInit,currentPage,pageSize)"
              :current-page="currentPage"
              :page-sizes="[10, 20, 30]"
              :page-size="pageSize"
              layout="sizes, prev, pager, next, jumper"
              :total="total"
            ></el-pagination>
          </div>
        </div>
      </div>
      <!--改派弹框-->
      <div class="component-models">
        <el-dialog title="改派" :visible.sync="dialogChoose" width="660px">
          <el-form :model="changeOrder" ref="changeOrder" label-width="200px" class="demo-ruleForm">
            <el-form-item label="选择施工类型:">
              <el-select
                v-model="changeOrder.type"
                placeholder="请选择施工类型"
                style="width:217px;"
                @change="getOldTeam"
              >
                <el-option
                  v-for="item in changeOrder.options"
                  :key="item.label"
                  :label="item.label"
                  :value="item.label"
                ></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="当前施工队:">
              <span style="float: left;">{{changeOrder.oldTeam.orgName}}</span>
            </el-form-item>
            <el-form-item label="当前状态:">
              <span style="float: left;">{{changeOrder.oldTeam.acceptStatus}}</span>
            </el-form-item>
            <el-form-item label="接单时间:">
              <span style="float: left;">{{changeOrder.oldTeam.acceptDate|dateFilter}}</span>
            </el-form-item>
            <el-form-item label="备注:">
              <span style="float: left;">{{changeOrder.oldTeam.dispatchRemark}}</span>
            </el-form-item>
            <el-form-item label="改派:">
              <el-select v-model="changeOrder.chooseTeam" placeholder="请选择改派施工队">
                <el-option
                  v-for="item in changeOrder.teams"
                  :key="item.orgId"
                  :label="item.orgName"
                  :value="item.orgId"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-form>
          <span slot="footer" class="dialog-footer">
            <el-button @click="dialogChoose = false">取消</el-button>
            <el-button @click="submitChangeOrder()">提交</el-button>
          </span>
        </el-dialog>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: "operation",
  data() {
    return {
      activeName: "first",
      ms_roleName: localStorage.getItem("roleName"),
      title: "数据列表",
      info: [],
      formInline: {
        info: "",
        date: [],
        name: ""
      },
      value: "",
      teamOptions: [], //施工队选择select，created阶段发起请求获取
      // 数据总条数
      total: 0,
      // 每页显示数据的条数
      pageSize: 10,
      // 当前显示的页面页码
      currentPage: 1,
      // dialogVisible:false,//弹框是否显示
      // textarea:'', //备注信息
      // 改派弹窗bool值
      dialogChoose: false,
      //改派弹窗数据
      changeOrder: {
        oldTeam: {},
        chooseTeam: "",
        type: "",
        options: [],
        teams: [],
        proId: ""
      },
    };
  },
  created() {},
  mounted() {
    this.teamInit();
    this.dataInit();
  },
  methods: {
    teamInit() {
      var that = this;
      let suCb = function(res) {
          that.teamOptions = that.deepClone(res.data.data);
          console.log("施工地信息", that.teamOptions);
        },
        erCb = function(res) {},
        palyParam = {
          url: "/api/web/proTeam/getTeamList",
          methods: "post",
          data: "",
          success: suCb,
          error: erCb
        };
      this.$https(palyParam);
    },
    dataInit(current, size, search) {
      // 对于时间选择器的值进行判断，当用户点击x清空以选择时间时候，会删除formInline.date属性，要进行赋值
      var dateArr = ["", ""];
      if (this.formInline.date != undefined) {
        dateArr = this.formInline.date;
      }
      var that = this;
      let suCb = function(res) {
          console.log("查询结果", res);
          that.info = that.deepClone(res.data.data);
          that.total = res.data.rowCount;
        },
        erCb = function(res) {},
        postData = {
          pageCurrent: that.currentPage,
          pageSize: that.pageSize,
          info: that.formInline.info,
          beginDate: dateArr[0] != undefined ? dateArr[0] + "" : "",
          endDate: dateArr[1] != undefined ? dateArr[1] + "" : "",
          name: that.formInline.name
        },
        palyParam = {
          url: "/api/web/proTeam/selectPT",
          methods: "post",
          data: postData,
          success: suCb,
          error: erCb
        };
      console.log("查询参数", postData);
      that.$https(palyParam);
    },
    findRes() {
      this.currentPage = 1;
      this.dataInit();
    },
    handleSelectionChange() {},

    //项目列表-改派
    handleChangeOrder(type, id) {
      // 获取以后处理数据 渲染下拉框
      this.changeOrder.options = [{ label: type }];
      console.log(this.changeOrder.options);
      // 下拉框初始值回显
      this.changeOrder.type = this.changeOrder.options[0].label
        ? this.changeOrder.options[0].label
        : "";
      this.dialogChoose = true;
      this.changeOrder.proId = id;
      this.getOldTeam();
    },
    // 改派弹窗-下拉框  获取当前施工类型下的施工队信息，以及可选施工队下拉框数据
    getOldTeam() {
      let that = this,
        suCb = res => {
          console.log(res);
          that.changeOrder.teams = that.deepClone(res.data.outOldProTeam) || [];
          that.changeOrder.oldTeam =
            that.deepClone(res.data.oldProTeam[0]) || {};
        },
        erCb = res => {},
        req = {
          url: "/api/web/proTeam/getProPT1",
          methods: "post",
          data: {
            proId: that.changeOrder.proId,
            majorType: that.changeOrder.type
          },
          success: suCb,
          error: erCb
        };
      that.$https(req);
    },
    // 改派提交按钮 事件处理函数
    submitChangeOrder() {
      let that = this,
        suCb = res => {
          console.log("改派提交结果：", res);
          if (res.data.flag == 1) {
            that.$msg("改派成功！");
            that.dialogChoose = false;
            that.dataInit();
          }
        },
        erCb = res => {
          console.log(res);
        },
        req = {
          url: "/api/web/proTeam/updatePT",
          methods: "post",
          data: {
            proId: that.changeOrder.proId,
            majorType: that.changeOrder.type,
            proTeamId: that.changeOrder.oldTeam.proTeamId,
            orgId: that.changeOrder.chooseTeam,
          },
          success: suCb,
          error: erCb
        };
      console.log(req.data);
      if (req.data.proTeamId != "") {
        that.$https(req);
      } else {
        that.$erMsg("请选择改派施工队！");
      }
    },
  }
};
</script>

<style scoped>
.component-searchHeader .search-header {
  width: 1100px;
  box-sizing: border-box;
  border: 1px solid rgba(228, 228, 228, 1);
  background-color: rgba(255, 255, 255, 1);
  margin: 20px auto 0;
}

.component-searchHeader .search-header .left-title {
  display: flex;
  justify-content: space-between;
  width: 100%;
  background-color: rgba(243, 243, 243, 1);
  height: 45px;
  box-sizing: border-box;
}

.component-searchHeader .search-header .left-title .left-text {
  width: 20%;
  color: #666;
  line-height: 45px;
  font-family: "微软雅黑";
  font-weight: 400;
  font-size: 12px;
  text-align: left;
  margin: 0 0 0 30px;
}

.component-searchHeader .right {
  width: 70%;
  display: flex;
  justify-content: flex-end;
  margin-right: 30px;
}

.component-searchHeader .right button {
  padding: 0 15px;
  height: 30px;
  margin: 6px 5px;
  line-height: 30px;
  font-size: 12px;
  color: #666;
  background-color: #fff;
  border: 1px solid #ccc;
}

.component-searchHeader .right button:hover {
  background-color: #f3f3f3;
}

.component-search-box {
  width: 1100px;
  height: 60px;
  box-sizing: border-box;
  background-color: #fff;
  border: 1px solid #e4e4e4;
  border-top: none;
  margin: 0 auto;
  text-align: left;
  padding-left: 30px;
  line-height: 60px;
}

.component-search-box .el-input__inner {
  height: 36px;
  display: inline-block;
  vertical-align: middle;
}

.component-listHeader .search-header {
  width: 1100px;
  box-sizing: border-box;
  border: 1px solid rgba(228, 228, 228, 1);
  background-color: rgba(255, 255, 255, 1);
  margin: 20px auto 0;
  border-bottom: 0;
}

.component-listHeader .search-header .left-title {
  display: flex;
  justify-content: space-between;
  width: 100%;
  background-color: rgba(243, 243, 243, 1);
  height: 45px;
  box-sizing: border-box;
}

.component-listHeader .search-header .left-title .left-text {
  width: 20%;
  color: #666;
  line-height: 45px;
  font-family: "微软雅黑";
  font-weight: 400;
  font-size: 12px;
  text-align: left;
  margin: 0 0 0 30px;
}

.component-listHeader .search-header .right {
  width: 70%;
  display: flex;
  justify-content: flex-end;
  margin-right: 10px;
}

.component-listHeader .search-header .right button {
  padding: 0 15px;
  height: 30px;
  width: 80px;
  margin: 6px 5px;
  line-height: 30px;
  font-size: 14px;
  color: #666;
  background-color: #fff;
  border: 1px solid #ccc;
}

.component-listHeader .search-header .right button:hover {
  background-color: #f3f3f3;
}

.component-listHeader .search-header .right .right-select-margin {
  margin-top: 6px;
  margin-right: 8px;
}

.component-table-header {
  width: 1100px;
  margin: 0 auto;
  display: flex;
  border: 1px solid #e4e4e4;
  background-color: #f9fafc;
  height: 45px;
  line-height: 45px;
  padding: 0;
  list-style: none;
  justify-content: space-between;
  box-sizing: border-box;
  border-top: none;
}

.component-table-header li:first-child {
  width: 50px;
}

.component-table-header li:first-child span {
  border-radius: 5px;
  border: 2px solid #aba2a2;
  display: inline-block;
  width: 16px;
  height: 16px;
  margin: 12.5px auto;
  line-height: 16px;
  font-size: 16px;
}

.component-table-header li {
  border-right: 1px solid #e4e4e4;
  font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC";
  font-weight: 650;
  font-style: normal;
  font-size: 14px;
  color: #666666;
}
.component-table-header li:last-child {
  border: none;
}

.component-table-body {
  width: 1100px;
  margin: 0 auto;
  display: flex;
  border: 1px solid #e4e4e4;
  background-color: #fff;
  height: 45px;
  line-height: 45px;
  padding: 0;
  list-style: none;
  justify-content: space-between;
  box-sizing: border-box;
  border-top: none;
}

.component-table-body li {
  font-size: 12px;
  color: #666;
  text-align: center;
  border-right: 1px solid #e4e4e4;
}

.component-table-body li:first-child {
  width: 50px;
}

.component-table-body li:nth-child(2) {
  width: 100px;
}

.component-table-body li:nth-child(3) {
  width: 150px;
}

.component-table-body li:nth-child(4) {
  width: 150px;
}
.component-table-body li:nth-child(5) {
  width: 150px;
}

.component-table-body li:last-child {
  width: 500px;
  border-right: none;
}

.component-table-body li:last-child {
  display: flex;
  justify-content: space-around;
  flex-wrap: wrap;
  padding: 0 auto;
}

.component-table-body li:last-child a {
  display: inline-block;
  text-align: center;
  color: #1abc9c;
  text-decoration: none;
  font-size: 12px;
}

/* 下面都是修改饿了么ui的下拉框和按钮选中后的样式 */

.el-select .el-input.is-focus .el-input__inner,
.el-select .el-input__inner:focus {
  border-color: #e4e4e4;
}

.el-select-dropdown__item.selected {
  color: #666;
  font-weight: 400;
}

.el-select-dropdown {
  min-width: 100px !important;
  top: 50px !important;
  margin-left: 5px;
}
.el-select-dropdown__item {
  height: 26px;
  line-height: 26px;
}

.el-select .el-input__inner {
  width: 100px;
  padding: 0 8px;
  margin: 6px 5px;
}
.component-paging .table-bottom .all-left button {
  background-color: #fff;
}
.component-paging .table-bottom .all-left button:hover {
  background-color: #f3f3f3;
}

.table {
  width: 1100px;
  margin: 0 auto;
}
.options {
  color: #1abc9c;
  padding: 0 5px;
  cursor: pointer;
}
.el-textarea {
  width: 220px;
  vertical-align: top;
}

.component-models .el-form-item {
  width: 512px;
  margin-bottom: 10px;
}
.component-models .el-select {
  left: -50px;
}
</style>
